﻿#define _CRT_SECURE_NO_WARNINGS 1
//
////#include<stdio.h>
////#include<stdlib.h>
//
//
////struct _iobuf {
////	char* _ptr;
////	int   _cnt;
////	char* _base;
////	int   _flag;
////	int   _file;
////	int   _charbuf;
////	int   _bufsiz;
////	char* _tmpfname;
////};
////typedef struct _iobuf FILE;
//
//
////int main()
////{
////	int a, b, x; 
////	printf("输入两个值做加法运算\n");
////	scanf("%d %d", &a, &b);
////	x = a + b;
////	printf("%d", x);
////	system("pause");
////	return 0;
////}
//
////#include<stdio.h>
////#include<stdlib.h>
//
////int main()
////{
////	FILE* pf = fopen("test.txt", "w");
////	//判断pf指针是否为空
////	if (pf == NULL)
////	{
////		perror("fopen");
////		return 1;
////	}
////
////	//文件操作
////	fputs("fopen example", pf);
////
////	//关闭文件
////	fclose(pf);
////
////	system("pause");
////	return 0;
////}
//
////#include<stdio.h>
////#include<stdlib.h>
//////fputc 写文件
////int main()
////{
////	FILE* pf = fopen("test.txt", "w");
////	//判断是否为空
////	if (pf == NULL)
////	{
////		perror("fopen:");
////		return 1;
////	}
////	
////	//写文件
////	int i = 0;
////	for (i = 0; i < 26; i++)
////	{
////		fputc('a' + i, pf);
////	}
////    
////    //关闭文件
////	fclose(pf);
////
////	system("pause");
////	return 0;
////}
//

//
//#include<stdio.h>
//#include<stdlib.h>
////fgetc 文件操作
//int main()
//{
//	FILE* pf = fopen("test.txt", "r");
//	//判断是否为空
//	if (pf == NULL)
//	{
//		perror("fopen:");
//		return 1;
//	}
//
//	//读文件
//	int ch = 0;
//	int i = 0;
//	for (i = 0; i < 26; i++)
//	{
//		ch = fgetc(pf);
//		printf("%c ", ch);
//	}
//	
//
//	//关闭文件
//	fclose(pf);
//	pf = NULL;
//
//	system("pause");
//	return 0;
//}




//#include<stdio.h>
//#include<stdlib.h>
////fputs 写一行数据
//int main()
//{
//	FILE* pf = fopen("test.txt", "w");
//	//判断是否为空
//	if (pf == NULL)
//	{
//		perror("fopen:");
//		return 1;
//	}
//
//	//写入一行数据到文件里
//	int ch = 0;
//	fputs("abcdef", pf);
//
//
//	//关闭文件
//	fclose(pf);
//	pf = NULL;
//
//	system("pause");
//	return 0;
//}


//#include<stdio.h>
//include<stdlib.h>
////fgets 读一行数据
//int main()
//{
//	FILE* pf = fopen("test.txt", "r");
//	//判断是否为空
//	if (pf == NULL)
//	{
//		perror("fopen:");
//		return 1;
//	}
//
//	//读文件
//	char ch[20] = { 0 };
//	fgets(ch, 7, pf);
//	printf("%s\n", ch);
//
//
//	//关闭文件
//	fclose(pf);
//	pf = NULL;
//
//	system("pause");
//	return 0;
//}//


//#include<stdio.h>
//#include<stdlib.h>
//struct S
//{
//	int age;
//	char name[20];
//	char adders[20];
//};
////fprintf 格式化写
//int main()
//{
//	struct S s = { 12,"zhansan","guangzhou" };
//	FILE* pf = fopen("test.txt", "w");
//	//判断是否为空
//	if (pf == NULL)
//	{
//		perror("fopen:");
//		return 1;
//	}
//
//	//写入文件
//	fprintf(pf, "%d %s %s\n", s.age, s.name, s.adders);
//	
//	system("pause");
//	return 0;
//}

//
//#include<stdio.h>
//#include<stdlib.h>
//struct S
//{
//	int age;
//	char name[20];
//	char adders[20];
//};
////fscanf 从流中读取格式化数据
//int main()
//{
//	struct S s;
//	FILE* pf = fopen("test.txt", "r");
//	//判断是否为空
//	if (pf == NULL)
//	{
//		perror("fopen:");
//		return 1;
//	}
//
//	//读文件
//	fscanf(pf, "%d %s %s\n", &(s.age), s.name, s.adders);
//	printf("%d %s %s", s.age, s.name, s.adders);
//
//	system("pause");
//	return 0;
//}

//
//#include<stdio.h>
//#include<stdlib.h>
//struct S
//{
//	int age;
//	float f;
//	char adders[20];
//};
////fwrite 二进制的写文件
//int main()
//{
//	struct S s = { 10,3.14,"guangzhou" };
//	//二进制的写要加上b
//	FILE* pf = fopen("test.txt", "wb");
//
//	//判断是否为空
//	if (pf == NULL)
//	{
//		perror("fopen:");
//		return 1;
//	}
//
//	//二进制的写文件
//	fwrite(&s, sizeof(struct S), 1, pf);
//
//	//关闭文件
//	fclose(pf);
//	pf = NULL;
//	system("pause");
//}




//#include<stdio.h>
//#include<stdlib.h>
//struct S
//{
//	int age;
//	float f;
//	char adders[20];
//};
////fread 二进制的读文件
//int main()
//{
//	struct S s = { 0 };
//	//二进制的写要加上b
//	FILE* pf = fopen("test.txt", "rb");
//
//	//判断是否为空
//	if (pf == NULL)
//	{
//		perror("fopen:");
//		return 1;
//	}
//
//	//二进制的读文件
//	fread(&s, sizeof(struct S), 1, pf);
//	printf("%d %f %s", s.age, s.f, s.adders);
//
//	//关闭文件
//	fclose(pf);
//	pf = NULL;
//	system("pause");
//}


#include<stdio.h>
#include<stdlib.h>
struct S
{
	int age;
	float f;
	char adders[20];
};
//sscanf 把一个字符串转换成对应的格式化数据
int main()
{
	struct S s = { 200,3.14,"guangzhou" };

	char buf[200] = { 0 };
	//把数据转换成字符串放进buf里
	sprintf(buf, "%d %f %s", s.age, s.f, s.adders);
	printf("字符串的数据： %s\n", buf);

	//从字符串中读取格式化数据
	struct S tmp = { 0 };
	sscanf(buf, "%d %f %s", &(tmp.age), &(tmp.f), tmp.adders);
	printf("格式化的数据: %d %f %s", tmp.age, tmp.f, tmp.adders);
	system("pause");
	return 0;
}




